attachInterrupt() এবং detachInterrupt() এর ব্যবহার

Computer Programming - আরডুইনো (Arduino) Interrupts এবং Timer Functions (Interrupts and Timer Functions in Arduino) |
235
235

Arduino-তে attachInterrupt() এবং detachInterrupt() ফাংশন দুটি ব্যবহার করা হয় একটি নির্দিষ্ট ইন্টারাপ্টের মাধ্যমে বোর্ডের আউটপুট বা কার্যক্রম নিয়ন্ত্রণ করার জন্য। ইন্টারাপ্ট হল এমন একটি প্রক্রিয়া যা বোর্ডের একটি নির্দিষ্ট ইভেন্ট ঘটলে সাড়া দেয়। এই ফাংশনগুলো দিয়ে ইন্টারাপ্ট চালু এবং বন্ধ করা হয়।

attachInterrupt() ফাংশন

attachInterrupt() ফাংশন ব্যবহার করে Arduino বোর্ডে একটি ইন্টারাপ্টের জন্য একটি ফাংশন সংযুক্ত করা হয়। এটি বোর্ডের একটি পিনের উপর একটি নির্দিষ্ট ইভেন্ট ঘটলে নির্দিষ্ট ফাংশনটি কল করে।

গঠন

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);
  • pin: ইন্টারাপ্ট পিন, যা সাধারণত ডিজিটাল পিন।
  • ISR: ইন্টারাপ্ট সার্ভিস রুটিন (ISR) নামক ফাংশন যা ইন্টারাপ্ট ঘটে গেলে কল করা হবে।
  • mode: ইন্টারাপ্টের ট্রিগার মোড, যা হতে পারে:
    • RISING: পিনের মান পরিবর্তন হলে যখন এটি উচ্চে ওঠে।
    • FALLING: পিনের মান পরিবর্তন হলে যখন এটি নীচে নামে।
    • CHANGE: পিনের মান পরিবর্তন হলে।

detachInterrupt() ফাংশন

detachInterrupt() ফাংশন ব্যবহার করে একটি নির্দিষ্ট পিনের জন্য সংযুক্ত ইন্টারাপ্ট বন্ধ করা হয়। এটি বোর্ডকে ইন্টারাপ্ট ট্রিগার করার সময় নির্দিষ্ট ফাংশনটি আর কল করবে না।

গঠন

detachInterrupt(digitalPinToInterrupt(pin));
  • pin: যে পিনের জন্য ইন্টারাপ্টটি বন্ধ করতে হবে।

উদাহরণ: বোতাম প্রেস দ্বারা LED কন্ট্রোল

নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি বোতাম প্রেসের মাধ্যমে LED চালু এবং বন্ধ করা হয়েছে।

const int buttonPin = 2; // বোতাম পিন
const int ledPin = 13; // LED পিন

volatile bool ledState = LOW; // LED এর অবস্থা

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP); // বোতাম পিন ইনপুট হিসেবে কনফিগার করা
  attachInterrupt(digitalPinToInterrupt(buttonPin), toggleLED, FALLING); // ইন্টারাপ্ট সংযুক্ত করা
}

void loop() {
  digitalWrite(ledPin, ledState); // LED এর অবস্থা আপডেট করা
}

void toggleLED() {
  ledState = !ledState; // LED এর অবস্থা পাল্টানো
}

কোডের ব্যাখ্যা

  • volatile: এটি ব্যবহৃত হয় যাতে ISR ভেরিয়েবলটি মূল প্রোগ্রামের সাথে সঠিকভাবে সিঙ্ক্রোনাইজ থাকে। ISR ফাংশনের মধ্যে এই ভেরিয়েবলটি পরিবর্তন করা হয়।
  • attachInterrupt(): বোতাম প্রেস হলে toggleLED() ফাংশনটি কল করবে।
  • detachInterrupt(): এই উদাহরণে ব্যবহৃত হয়নি, কিন্তু এটি বোতামের জন্য ইন্টারাপ্ট বন্ধ করার জন্য ব্যবহার করা যেতে পারে যখন বোতাম আর প্রেস করা হচ্ছে না।

ব্যবহারিক টিপস

  • ইন্টারাপ্টের সংখ্যা: Arduino বোর্ডে বিভিন্ন পিনের জন্য নির্দিষ্ট সংখ্যক ইন্টারাপ্ট হতে পারে; প্রতিটি বোর্ডের জন্য এটি আলাদা হতে পারে।
  • ISR এ বিলম্ব: ISR এর মধ্যে delay() বা দীর্ঘকালীন কোড ব্যবহার করা উচিত নয়, কারণ এটি অন্যান্য কার্যক্রমকে ব্যাহত করতে পারে।
  • ডিবাগিং: যখন ইন্টারাপ্ট ব্যবহার করছেন, তখন সিরিয়াল মনিটরের মাধ্যমে ডিবাগ করা কঠিন হতে পারে, তাই সতর্ক থাকুন।

attachInterrupt() এবং detachInterrupt() ফাংশন Arduino প্রোগ্রামে ইন্টারাপ্ট ভিত্তিক কাজের জন্য অত্যন্ত কার্যকর। এগুলো ব্যবহার করে দ্রুত সাড়া দেওয়ার ক্ষমতা বাড়ানো যায় এবং বিভিন্ন প্রোজেক্টে কার্যকারিতা উন্নত করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion